/*****************************************************************************************
 **  Author:dgz master
 **  Contact：jiduxiong@dagongzao.com
 **
 *****************************************************************************************/
//此js文件是用来自定义扩展业务代码，可以扩展一些自定义页面或者重新配置生成的代码

let extension = {
  components: {
    //查询界面扩展组件
    gridHeader: '',
    gridBody: '',
    gridFooter: '',
    //新建、编辑弹出框扩展组件
    modelHeader: '',
    modelBody: '',
    modelRight: '',
    modelFooter: '',
  },
  tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
  buttons: { view: [], box: [], detail: [] }, //扩展的按钮
  methods: {
    //下面这些方法可以保留也可以删除
    onInit() {
      //框架初始化配置前，
      //树形结点的id字段

      this.queryFields=["TaskName","TaskStatus"]
    },
    initLogisticSiteSelectTable() {
      this.editFormOptions.forEach((option, index) => {
        option.forEach((item, index2) => {
 

          
          if (item.field == 'ContainerCode') {

            item.url = 'api/Wms_Container/getPageData'

            //设置显示的字段
            item.columns = [
              { field: 'ContainerId', title: 'ContainerId', type: 'string', width: 110, hidden: true },
              //设置search:true,则字段可以搜索
              {
                field: 'ContainerType',
                title: '容器类型',
                type: 'byte',
                bind: { key: '仓储容器类型', data: [] },
                width: 60,
              },
              { field: 'ContainerCode', title: '容器编号', type: 'string', width: 100, search: true },
              { field: 'ContainerName', title: '容器名称', type: 'string', width: 120, search: true },
              { field: 'Enabled', title: '启用', type: 'byte', bind: { key: 'enabled', data: [] }, width: 60 },
              {
                field: 'ContainerUsage',
                title: '容器用途',
                type: 'byte',
                bind: { key: '容器用途', data: [] },
                width: 60,
              },
            ]

            //选中table数据后，回写到表单
            item.onSelect = (rows) => {
              this.editFormFields.ContainerCode = rows[0].ContainerCode
              this.editFormFields.ContainerName = rows[0].ContainerName
              this.editFormFields.ContainerId = rows[0].ContainerId
            }

            /****下面的这些都是可以选配置，上面的是必填的******/

            //(输入框搜索)表格数据加载前处理
            item.loadBefore = (param, callback) => {
              param.value = this.editFormFields.ContainerCode
              callback(true)
            }

            /****************下面这些配置不是必须的**************/
            //表格数据加载后处理
            item.loadAfter = (rows, callback, result) => {
              callback(true)
            }

            //设置弹出框高度(默认200)
            item.height = 200
            //设置表格是否单选
            item.single = true
            //设置是否显示分页
            item.paginationHide = false
          }
           if (item.field == 'FromStationCode' || item.field == 'ToStationCode') {
             item.url = 'api/Bas_StationConfig/getPageData'

             //设置显示的字段
             item.columns = [
               { field: 'StationId', title: 'StationId', type: 'string', width: 110, hidden: true },
               //设置search:true,则字段可以搜索

               { field: 'StationCode', title: '工位编号', type: 'string', width: 100, search: true },
               { field: 'StationName', title: '工位名称', type: 'string', width: 120, search: true },
               { field: 'PlantCode', title: '工厂编号', type: 'string', width: 100, search: true },
               { field: 'LineCode', title: '线体编号', type: 'string', width: 100, search: false },
               { field: 'Enabled', title: '启用', type: 'byte', bind: { key: 'enabled', data: [] }, width: 60 },
             ]

             //选中table数据后，回写到表单
             item.onSelect = (rows) => {
         
               if (item.field == 'FromStationCode') {
                 this.editFormFields.FromStationId = rows[0].StationId
                 this.editFormFields.FromStationCode = rows[0].StationCode
                 this.editFormFields.FromStationName = rows[0].StationName
               }
               if (item.field == 'ToStationCode') {
                 this.editFormFields.ToStationCode = rows[0].StationCode
                 this.editFormFields.ToStationName = rows[0].StationName
                 this.editFormFields.ToStationId = rows[0].StationId
               }
             }

             /****下面的这些都是可以选配置，上面的是必填的******/

             //(输入框搜索)表格数据加载前处理
             item.loadBefore = (param, callback) => {
               param.value = this.editFormFields.ContainerCode
               callback(true)
             }

             /****************下面这些配置不是必须的**************/
             //表格数据加载后处理
             item.loadAfter = (rows, callback, result) => {
               callback(true)
             }

             //设置弹出框高度(默认200)
             item.height = 200
             //设置表格是否单选
             item.single = true
             //设置是否显示分页
             item.paginationHide = false
           }
        })
      })
    },
    onInited() {
      this.columns.forEach(item=>{
      //冻结列
        if(item.field =='TaskMainId' || item.field=='TaskStatus'|| item.field =='TaskName' ){
          item.fixed=true
        }
      })
      //框架初始化配置后
      //如果要配置明细表,在此方法操作
      //this.detailOptions.columns.forEach(column=>{ });
      this.initLogisticSiteSelectTable()

      this.initDetailSelectTable()

      

       this.detailOptions.pagination.sortName = "TaskMainId,TaskSeq";  //明细表排序字字段
       this.detailOptions.pagination.order = "asc" ; //明细表排序方式desc或者asc
    },
     
    initDetailSelectTable(){
      this.detailOptions.columns.forEach((item) => {

        if (item.field == 'ExecuteDeviceType') {
          item.onChange = (editRow, rows, val) => {
            // editRow: 当前编辑行数据
            //rows:当前change行数据
            // val:当前选中的值
            editRow.ExecuteDeviceNo = val
          }
        }

        if (item.field == 'StartSite' || item.field == 'EndSite') {
          item.readonly = false
          item.disable = false
          //配置请求的接口地址
          //可以使用生成的页面接口，注意接口权限问题，如果提示没有权限,参照后台后开发文档上的重写权限示例
          item.url = 'api/Mds_LogisticSites/getPageData'
          //设置显示的字段
          item.columns = [
            //设置search:true,则字段可以搜索
            { field: 'SiteType', title: '点位类型', type: 'int', bind: { key: '物流点类型', data: [] }, width: 60 },
            { field: 'SiteCode', title: '物流点编号', type: 'string', width: 100, search: true },
            { field: 'SiteName', title: '物流点名称', type: 'string', width: 120, search: true },
            { field: 'Remarks', title: '工位编号', type: 'string', width: 100, seaarch: true },
            { field: 'Enabled', title: '启用', type: 'byte', bind: { key: 'enabled', data: [] }, width: 60 },
            { field: 'IsVirsual', title: '虚拟点位', type: 'byte', bind: { key: 'enabled', data: [] }, width: 60 },
          ]

          // //选中table数据后，回写到表单
          item.onSelect = (editRow,rows) => {
            if (item.field == 'StartSite') {
              editRow.StartSite = rows[0].SiteCode
              editRow.StartSiteName = rows[0].SiteName
            }
            if (item.field == 'EndSite') {
              editRow.EndSite = rows[0].SiteCode
              editRow.EndSiteName = rows[0].SiteName
            }
          }

          /****下面的这些都是可以选配置，上面的是必填的******/

          //(输入框搜索)表格数据加载前处理
          item.loadBefore = (editRow,param, callback) => {
            //方式1、手动设置查询条件
            // param.wheres.push({
            //       name:"Customer",
            //       value:this.editFormFields.Customer,
            //       displayType:"like"
            // })
            //方式2、给param.value设置值，后台手动处理查询条件
            param.value = editRow.StartSite
            if (item.field == 'EndSite') {
              param.value = editRow.EndSite
            }
            callback(true)
          }

          /****************下面这些配置不是必须的**************/
          //表格数据加载后处理
          item.loadAfter = (editRow,rows, callback, result) => {
            callback(true)
          }

          //设置弹出框高度(默认200)
          item.height = 200
          //设置弹出框宽度(默认500)
          //item.width = 400;
          // item.textInline = false; //设置表格超出自动换行显示
          //设置表格是否单选
          item.single = true
          //设置是否显示分页
          item.paginationHide = false
        }

      })
    // let tmp =  this.detail.columns.find((i) => i.field == 'ExecuteDeviceType')
    // if(!!tmp) {
    //   tmp.onSelect = (editRow, rows) => {
    //     console.log(editRow, 'editRow')
    //     console.log(rows, 'rows')
    //   }
    // }
    },

    searchBefore(param) {
      //界面查询前,可以给param.wheres添加查询参数
      //返回false，则不会执行查询
      return true
    },
    searchAfter(result) {
      //查询后，result返回的查询数据,可以在显示到表格前处理表格的值
      return true
    },
    addBefore(formData) {
      //新建保存前formData为对象，包括明细表，可以给给表单设置值，自己输出看formData的值
      return true
    },
    updateBefore(formData) {
      //编辑保存前formData为对象，包括明细表、删除行的Id
      return true
    },
    delBefore(formData) {
      //编辑保存前formData为对象，包括明细表、删除行的Id
      return true
    },
    addAfter(formData) {
      //新建保存前formData为对象，包括明细表，可以给给表单设置值，自己输出看formData的值
      //添加后刷新字典
      this.initDicKeys()
      return true
    },
    updateAfter(formData) {
      //编辑保存前formData为对象，包括明细表、删除行的Id
      //添加后刷新字典
      this.initDicKeys()
      return true
    },
    delAfter(formData) {
      //编辑保存前formData为对象，包括明细表、删除行的Id
      //添加后刷新字典
      this.initDicKeys()
      return true
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后，可以在此处写逻辑，如，从后台获取数据
      //(1)判断是编辑还是新建操作： this.currentAction=="Add";
      //(2)给弹出框设置默认值
      //(3)this.editFormFields.字段="xxx";
      //如果需要给下拉框设置默认值，请遍历this.editFormOptions找到字段配置对应data属性的key值
      //看不懂就把输出看：console.log(this.editFormOptions)
    },
  },
}
export default extension
